const axios = require('axios');

// 请求数组
const requests = [];

// 创建axios实例
const instance = axios.create({
    baseURL: 'http://your-api-url',
    timeout: 1000,
});

// 请求拦截器
instance.interceptors.request.use(config => {
    // 在发送请求之前做些什么
    requests.push(config);
    // 检查token是否过期
    if (tokenIsExpired()) {
        return refreshToken().then(newToken => {
            // 设置新的token
            setNewToken(newToken);
            // 重发所有保存的请求
            return requests.map(request => instance(request));
        });
    }
    return config;
}, error => {
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 响应拦截器
instance.interceptors.response.use(response => {
    // 对响应数据做点什么
    return response;
}, error => {
    // 对响应错误做点什么
    return Promise.reject(error);
});

// 模拟token过期函数
function tokenIsExpired() {
    return true; // 根据实际情况返回
}

// 模拟刷新token函数
function refreshToken() {
    return new Promise((resolve) => {
        // 模拟从服务器获取新token
        setTimeout(() => resolve('new_token'), 1000);
    });
}

// 模拟设置新token函数
function setNewToken(newToken) {
    // 设置新token到axios实例
    instance.defaults.headers.common['Authorization'] = 'Bearer ' + newToken;
}

// 使用axios实例发送请求
instance.get('/endpoint')
    .then(response => {
        console.log(response);
    })
    .catch(error => {
        console.error(error);
    });
